package com.ruoyi.flowable.controller.base;

import com.ruoyi.common.core.controller.BaseController;
import org.flowable.engine.*;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * @program: RuoYi-Vue
 * @description: 基础controller
 * @author: jhw
 * @create: 2021-03-30 15:10
 **/
public abstract class BaseFlowableController extends BaseController {

    /**
     * flowable仓库服务 服务提供了管理与控制部署(deployments)与流程定义(process definitions)的操作
     * 1.查询引擎现有的部署与流程定义。
     * 2.暂停或激活部署中的某些流程，或整个部署。暂停意味着不能再对它进行操作，激活刚好相反，重新使它可以操作。
     * 3.获取各种资源，比如部署中保存的文件，或者引擎自动生成的流程图。
     * 4.获取POJO版本的流程定义。它可以用Java而不是XML的方式查看流程。
     */
    @Autowired
    protected RepositoryService repositoryService;
    /**
     * flowable 流程实例运行服务 用于启动流程定义的新流程实例
     */
    @Autowired
    protected RuntimeService runtimeService;

    /**
     * flowable任务操作服务 所有任务相关的东西都组织在TaskService中
     * 查询分派给用户或组的任务
     * 创建独立运行(standalone)任务。这是一种没有关联到流程实例的任务。
     * 决定任务的执行用户(assignee)，或者将用户通过某种方式与任务关联。
     * 认领(claim)与完成(complete)任务。认领是指某人决定成为任务的执行用户，也即他将会完成这个任务。完成任务是指“做这个任务要求的工作”，通常是填写某个表单。
     */
    @Autowired
    protected TaskService taskService;

    @Autowired
    protected ManagementService managementService;
    /**
     * flowable表单服务
     * 这个服务引入了开始表单(start form)与任务表单(task form)的概念。 开始表单是在流程实例启动前显示的表单，而任务表单是用户完成任务时显示的表单。
     * Flowable可以在BPMN 2.0流程定义中定义这些表单。表单服务通过简单的方式暴露这些数据。再次重申，表单不一定要嵌入流程定义，因此这个服务是可选的。
     */
    @Autowired
    protected FormService formService;
    /**
     * flowable历史数据服务  暴露Flowable引擎收集的所有历史数据。
     * 当执行流程时，引擎会保存许多数据（可配置），例如流程实例启动时间、谁在执行哪个任务、完成任务花费的事件、每个流程实例的执行路径，等等。
     * 这个服务主要提供查询这些数据的能力。
     */
    @Autowired
    protected HistoryService historyService;


}
